package nivel
{
	// ========================================================================	
	import flash.display.Sprite;
	import flash.geom.Point;
	
	import kapi.API;
	import kapi.mvc.Enfocable;
	import kapi.mvc.Graficable;
	import kapi.utiles.Funciones;
	// ========================================================================

	public class Mundo extends Sprite
	{
		// ====================================================================
		private var _grafico:Sprite
		private var _objetos:Array
		private var _foco:Enfocable
		private var _posicionDeFoco:Point
		// ====================================================================

		// ====================================================================
		// CONSTRUCTOR
		// ====================================================================

		// --------------------------------------------------------------------
		public function Mundo(nivel:uint)
		{
			_objetos = []
			_grafico = Mundos.mundoActual(nivel - 1)
			addChild(_grafico)
		}

		// ====================================================================
		// PROPERTIES
		// ====================================================================

		// --------------------------------------------------------------------
		public function get grafico():Sprite { return _grafico }

		// ====================================================================
		// FUNCIONES
		// ====================================================================

		// --------------------------------------------------------------------
		public function agregar(objeto:Graficable):void
		{
			if (_objetos.indexOf(objeto) != -1)
				throw new Error('El objeto '+objeto+' ya esta en el mundo')
			_objetos[_objetos.length] = objeto
			addChild(objeto.grafico)
		}
		// --------------------------------------------------------------------
		public function moverSegun(foco:Enfocable):void
		{
			_foco = foco
			_foco.alCambiarLaPosicion.escuchar(
				Funciones.crearFuncionConMasParametros(enfocar, foco)
			)
		}
		// --------------------------------------------------------------------
		private function enfocar(posicion:Point, foco:Enfocable):void
		{
			/*
			var posicionGlobal:Point = foco.grafico.localToGlobal(posicion)
			var izquierda:Boolean = foco.velocidad.x > 0 && posicionGlobal.x > API.stage.stageWidth / 2
			var derecha:Boolean = foco.velocidad.x < 0 && posicionGlobal.x < API.stage.stageWidth / 2
			if (izquierda || derecha)
			{
				_grafico.x -= foco.velocidad.x
				//posicion.x = _grafico.width / 2
				//foco.posicionar(posicion, false)
			}

			_posicionDeFoco = new Point(posicion.x, posicion.y)
			*/
		}
	}
}